package ecBase;
import java.util.*;

/*
 * IndPrototype.java
 * Created: 2005-11-30 01:23
 */

/**
* An Individual is an item in the EC population.
 * Individuals are created most commonly by the newIndividual(...) method
 *
 * @author T.S.Yo
 * @last updated 2005/12/14
**/

public abstract class IndPrototype implements Cloneable,Comparator
{
// Attribute
    //String name;                     // For output
    // Genotype chromosome;            // The genotype of this individual
    //Fitness fitness;                 // The value of fitness
    //boolean evaluated;               //  The flag of evaluation
//---------------------------------------------------------------------
// Constructor    
    /** Random Constructor **/
    public IndPrototype(){
        /* Default constructor, create random instance of the Genotype */
        //evalInd();    // Evaluate after instantiation
    }
    /** Copy Constructor **/
    public IndPrototype(final IndPrototype ind){
        /* Copy constructor, copy each attribute from the template */
        //evalInd();    // Evaluate after instantiation
    }
//---------------------------------------------------------------------
// Methods to access private members    
    /*
        set() and get() for each attribute
    */
//---------------------------------------------------------------------
// Overriding methods
    /** toString() for output the Individual **/
    public abstract String toStrig();

//---------------------------------------------------------------------
// Implementing for interface
// Methods for Comparator    
    /** Overriding the comparator between Individuals  **/
    public abstract int equals(final IndPrototype ind);    public abstract int compareTo(final IndPrototype ind);    public abstract int compare(IndPrototype ind1, IndPrototype ind2);
// Methods for Cloneable    
    /** Implementing clone() **/    public abstract Object clone();
//---------------------------------------------------------------------
// Evaluating the individual    /** The fitness of this individual **/
    /*public Fitness fitness(){
        // define the fitness of the individual
    }*/
}